home *** CD-ROM | disk | FTP | other *** search
-
- import javax.swing.*;
- import java.awt.*;
- import java.awt.image.*;
- import java.awt.event.*;
- import java.io.IOException;
- import java.awt.print.*;
- import java.io.*;
- import javax.imageio.*;
- import java.util.Iterator;
-
-
-
- public class Andras extends JWindow{
-
- javax.imageio.ImageWriter myimagewriter;
- BufferedImage img;
- ImageBgPanel imgbgpanel;
- Container contentPane;
- JPopupMenu popup;
- int mpX, mpY;
- int[] params;
- FileDialog fd;
- static Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
-
- public Andras() {
-
-
- try{
- java.awt.Robot robot = new Robot();
- img = robot.createScreenCapture(new java.awt.Rectangle(0,0,screenSize.width,screenSize.height));
-
- }catch(Exception exp){}
-
- this.setCursor(new Cursor(Cursor.CROSSHAIR_CURSOR));
-
- //Image image = Toolkit.getDefaultToolkit().getImage("iconed.gif");
- //setIconImage(image);
-
-
-
- /* this.addKeyListener(new java.awt.event.KeyListener() {
- public void keyTyped(KeyEvent kev) {
- if ( kev.getKeyCode() == 17 )
- System.exit(0);
- }
- public void keyPressed(KeyEvent kev) {
- }
- public void keyReleased(KeyEvent kev) {
- }
- }); */
-
- imgbgpanel = new ImageBgPanel(img);
- imgbgpanel.setLayout(null);
- contentPane = getContentPane();
- contentPane.add(imgbgpanel);
-
- popup = new JPopupMenu();
- popup.setCursor(new Cursor(Cursor.HAND_CURSOR));
- JMenuItem menuItem2 = new JMenuItem("Print");
- menuItem2.addActionListener(new java.awt.event.ActionListener() {
- public void actionPerformed(ActionEvent e) {
- popup.setVisible(false);
- PrinterJob job = PrinterJob.getPrinterJob();
- PageFormat the_page = job.pageDialog(job.defaultPage());
-
- Book bk = new Book();
- bk.append(new PaintBill(), the_page);
- job.setPageable(bk);
- if (job.printDialog()) {
- try { job.print(); }
- catch (Exception exc) { }
- }
- }
- });
- popup.add(menuItem2);
-
- JMenuItem menuItem3 = new JMenuItem("Save");
- menuItem3.addActionListener(new java.awt.event.ActionListener() {
- public void actionPerformed(ActionEvent e) {
- File filetosave;
- JFileChooser fc = new JFileChooser();
- fc.addChoosableFileFilter(new ImageFilter());
- int returnVal = fc.showSaveDialog(imgbgpanel);
- if (returnVal == JFileChooser.APPROVE_OPTION) {
- File file = fc.getSelectedFile();
- String megadottfilenev=Utils.getExtension(file);
- if( megadottfilenev.equals(Utils.png)){
- BufferedImage selectedImagetoSave = img.getSubimage(params[0],params[1],params[2],params[3]);
- try
- {
- ImageIO.write(selectedImagetoSave, "png", file);
- }
- catch(Exception ioe){
- System.out.println(ioe);
- }
- }else{
- if( megadottfilenev==null || !(megadottfilenev.equals(Utils.jpg) || megadottfilenev.equals(Utils.jpeg)) ){
- filetosave = new File(file.getParent(),file.getName()+".jpg");
- }else{
- filetosave=file;
- }
- BufferedImage selectedImagetoSave = img.getSubimage(params[0],params[1],params[2],params[3]);
- try
- {
- javax.imageio.stream.ImageOutputStream stream = null;
- try{
- filetosave.delete();
- stream = ImageIO.createImageOutputStream(filetosave);
- } catch (IOException iioe) {
- throw new IIOException("Can't create output stream!",iioe);
- }
-
-
- ImageWriter writer = null;
- ImageTypeSpecifier type =
- ImageTypeSpecifier.createFromRenderedImage(selectedImagetoSave);
- Iterator iter = ImageIO.getImageWriters(type, "jpeg");
- if (iter.hasNext()) {
- writer = (ImageWriter)iter.next();
- }
- writer.setOutput(stream);
- ImageWriteParam myirparam = writer.getDefaultWriteParam();
- myirparam.setCompressionMode(2);
- myirparam.setCompressionQuality(1.0F);
- javax.imageio.metadata.IIOMetadata myiiometadata = writer.getDefaultStreamMetadata(myirparam);
- IIOImage myiioimage = new IIOImage(selectedImagetoSave,null, myiiometadata);
- writer.write(myiioimage);
- stream.flush();
- writer.dispose();
- stream.close();
- //ImageIO.write(selectedImagetoSave, "jpeg", filetosave);
- /*javax.imageio.spi.ImageWriterSpi iws = new javax.imageio.spi.ImageWriterSpi();
- //java.util.List list = new java.util.Vector(0);
- //javax.imageio.ImageWriter myimagewriter = ImageIO.getImageWriter(null);
- javax.imageio.ImageWriter myimagewriter = (javax.imageio.ImageWriter)ImageIO.getImageWritersByFormatName("jpeg").next();
- ImageWriteParam myirparam = myimagewriter.getDefaultWriteParam();
- myirparam.setCompressionMode(2);
- myirparam.setCompressionQuality(1.0F);
- javax.imageio.metadata.IIOMetadata myiiometadata = myimagewriter.getDefaultStreamMetadata(myirparam);
- IIOImage myiioimage = new IIOImage(selectedImagetoSave,null, myiiometadata);
- javax.imageio.stream.ImageOutputStream stream = null;
- try {
- filetosave.delete();
- stream = ImageIO.createImageOutputStream(filetosave);
- } catch (IOException iioe) {
- throw new IIOException("Can't create output stream!", iioe);
- }
-
- myimagewriter.setOutput(stream);
- myimagewriter.write(myiioimage);
- stream.flush();
- myimagewriter.dispose(); */
-
- }
- catch(Exception ioe){
- System.out.println(ioe);
- }
- }
- }
- }
- });
- popup.add(menuItem3);
-
- JMenuItem menuItem = new JMenuItem("Exit");
- menuItem.addActionListener(new java.awt.event.ActionListener() {
- public void actionPerformed(ActionEvent e) {
- System.exit(0);
- }
- });
- popup.add(menuItem);
-
- imgbgpanel.add(popup);
- MouseListener popupListener = new PopupListener();
- imgbgpanel.addMouseListener(popupListener);
- imgbgpanel.addMouseMotionListener(new MouseMotionListener(){
- public void mouseMoved(MouseEvent me){
- }
- public void mouseDragged(MouseEvent me){
- imgbgpanel.removeAll();
- int x = me.getX();
- int y = me.getY();
- params = new int[]{mpX,mpY,x-mpX,y-mpY};
- Abra abra = new Abra(mpX,mpY,x-mpX,y-mpY);
- abra.setOpaque(false);
- imgbgpanel.add(abra);
- imgbgpanel.repaint();
- show();
- }
- });
- imgbgpanel.addMouseListener(new MouseListener(){
- public void mouseClicked(MouseEvent e){
- imgbgpanel.removeAll();
- imgbgpanel.repaint();
- show();
- }
- public void mousePressed(MouseEvent e){
- mpX=e.getX();
- mpY=e.getY();
- }
- public void mouseReleased(MouseEvent e){
- }
- public void mouseEntered(MouseEvent e){
- }
- public void mouseExited(MouseEvent e){
- }
- });
- }
- public static void main(String[] args) {
- Andras andras1 = new Andras();
- andras1.setSize(screenSize.width,screenSize.height);
- andras1.setVisible(true);
-
-
- }
-
- class PaintBill implements Printable {
- int szelesseg, magassag;
- BufferedImage selectedImage = img.getSubimage(params[0],params[1],params[2],params[3]);
- public int print(Graphics g, PageFormat pf, int pageIndex) throws PrinterException {
- szelesseg=selectedImage.getWidth();
- magassag =selectedImage.getHeight();
-
- if(selectedImage.getWidth() > pf.getImageableWidth()){
- double d=pf.getImageableWidth()/ selectedImage.getWidth();
- szelesseg = (int)Math.round(pf.getImageableWidth());
- magassag = (int)Math.round(selectedImage.getHeight()*d);
- }
-
- if(magassag > pf.getImageableHeight()){
- double p=pf.getImageableHeight()/ magassag;
- szelesseg = (int)Math.round(selectedImage.getWidth()*p);
- magassag = (int)Math.round(pf.getImageableHeight());
- }
-
- g.drawImage(selectedImage,(int)Math.ceil(pf.getImageableX()),(int)Math.ceil(pf.getImageableY()),szelesseg,magassag,new MyImgOb());
- return Printable.PAGE_EXISTS;
- }
- }
- class MyImgOb implements ImageObserver{
- public boolean imageUpdate(Image image, int infoflags, int x, int y, int width, int height){
- image=img;
- return true;
- }
- }
-
- class ImageBgPanel extends JPanel {
- TexturePaint texture;
-
- ImageBgPanel(BufferedImage myimg) {
- texture = new TexturePaint(myimg,new Rectangle(0, 0,myimg.getWidth(), myimg.getHeight()));
- }
-
- public void paintComponent(Graphics g) {
- Graphics2D g2d = (Graphics2D)g;
- g2d.setPaint(texture);
- g2d.fillRect(0, 0, getSize().width, getSize().height);
- }
- }
-
- class PopupListener extends MouseAdapter {
- public void mousePressed(MouseEvent e) {
- maybeShowPopup(e);
- }
-
- public void mouseReleased(MouseEvent e) {
- maybeShowPopup(e);
- }
-
- private void maybeShowPopup(MouseEvent e) {
- if (e.isPopupTrigger()) {
- popup.show(e.getComponent(),
- e.getX(), e.getY());
- }
- }
- }
-
- }